Network
========================

## Концепция коммунистического интернета

Идеальным решением было бы полное преодоление товарности в сфере связи. 
На данном этапе исторического развития человечество вплотную подошло к данной черте.

Основные препятствия для преодоления разделения труда в существующих сетях связи:

3) Централизованное распределение адресов
4) Централизованное подтверждения целостности данных (Электронная подпись)
2) Централизованное распределение доменных имен
5) Централизация доставки трафика
6) Централизация платформ (интернет сервисов)

### Распределенное назначение адресов

В любой системе связи необходимо направлять поток данных от отправителя к получателю. 
В современных компьютерных сетях существует несколько способов адресации на каждый уровень [OSI](https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_OSI) свой.

Нас больше интересует сетевой уровень, так он предназначен для адресации в глобальной сети и отвечает за определение кратчайших маршрутов (маршрутизацию). 
Использует IP адреса. 
Изначально предполагалось что любой компьютер сети сможет сзываться с любым другим, для чего требуется единое адресное пространство.

Выделение адресов происходит международной некоммерческой организации IANA (Internet Assigned Numbers Authority), контролируемой компанией ICANN (Internet Corporation for Assigned Names and Numbers). 
Самоназначенные адреса не будут маршрутизироваться в глобальной сети. 
[Правительство Украины в официальных письмах просило ICANN Отозвать IP-адреса у российских членов](https://russiancouncil.ru/analytics-and-comments/analytics/sanktsii-v-otnoshenii-internet-infrastruktury-v-kontekste-ukrainskogo-krizisa-kak-reagiruyut-steykkh/), но пахан не стал этого делать, возможно шестерки из Украины денег к прошению не приложило, или шестерки из России приложили больше в ответном письме.

Существует 2 версии протокола: IPv4 и IPv6.

    * IPv4 оперирует 32 битными адресами, а потому адресное пространство ограничено 4 294 967 296 (2^32) возможными уникальными адресами, что меньше чем число людей на планете.
        
        Существуют методы обхода данного ограничения.
        Например, NAT (транслятор сетевых адресов), который использует адреса транспортного уровня для расширения диапазона, и позволяет вывести в сеть большее число хостов, чем имеется адресов.
        Однако все подобные методы предполагают централизацию, а значит разделение труда.
        
        Даешь IPv6!
    * IPv6 оперирует 128 битными адресами, а потому адресное пространство обеспечивает по 5·10^28 уникальных адресов на каждого жителя Земли.
        
        В IPv6 предусмотрена автоконфигурация адресов по методу SLAAC (Stateless Address Autoconfiguration) на основе MAC-адресов, однако данная технология работает только в пределах сетевого сегмента канального уровня.

Сегодня в локальных сетях наиболее распространена авто конфигурация адресов по DHCP. 
Адреса раздает центральный DHCP сервер, таким образом автоматически возникает разделение труда и единая точка отказа.

Большой диапазон адресов IPv6 позволяет назначать адреса по принципу случайных чисел, однако в таком случае возможна целенаправленная установка адреса идентичного другому узлу, с целью его вытеснения из сети злоумышленником.

В скрытых сетях найдено простое и элегантное решение: 
Узлы генерируют ключи асимметричного  шифрования, а затем публичный ключ назначается адресом. 
Узел не сможет включиться в сеть, если его адрес не будет подписан приватным ключом, другие узлы не будут маршрутизировать его трафик. 
Подбор пары ключей идентичных ключам атакуемого требует значительных вычислительных мощностей, а значит обходится дорого. 
При этом атакованный может в любой момент генерировать новый адрес, делая бесполезной работу по его подбору. 

Кроме того, информация переданная по такому соединению любым протоколом будет зашифрована, а значит можно отказаться от шифрования на уровне приложений. 
С другой стороны шифрование требует дополнительных трудозатрат и тем повышает стоимость связи. 
В случае передачи данных между соседними шифрование бесполезно. 
Предположу, что если сделать шифрование опциональным, то его мало кто будет использовать в угоду производительности. 

Наиболее простой реализацией данного принципа является сеть yggdrasil. 
Разработка которой пока не дошла до версии 1.0, кроме того нет реализации сети в виде модуля ядра linux, что значительно бы ускорило её работу. В отличие, от других скрытых сетей узлы yggdrasil способны автоматически обнаруживать друг друга в одной канальной среде. 
Сеть возможно собрать без согласования настроек между участниками, используя единый конфигурационный файл для маршрутизаторов.

### Распределенное подтверждение целостности

Для защиты информации от кражи или подмены на данный момент в интернете выстроена [инфраструктура открытых ключей](https://ru.wikipedia.org/wiki/Инфраструктура_открытых_ключей), которая предоставляет способ проверки идентификации удаленного сайта с помощью цифрового сертификата.

Цифровой сертификат – это электронный файл, удостоверяющий подлинность держателя сертификата. 
Цифровые сертификаты предоставляют способ аутентификации пользователей через доверенного третьего - центр сертификации (CA). 
Этот CA подтверждает удостоверение держателя сертификата и "подписывает" сертификат, чтобы подтвердить, что он не был поддельным или изменен.
Для проверки подлинности полученных через сеть данных компьютер получателя выстраивает цепь доверия до одного из корневых сертификатов, заложенных в операционную систему. 
При добавлении стороннего сертификата в качестве корневого его автор получает возможность читать и подменять пользовательский трафик (речь в том числе про национальные сертификаты).

В данной схеме есть разделение труда. 
Центр сертификации для удостоверения нижестоящих сертификатов требует денег. 

Данную проблему решили в уже упомянутых скрытых сетях . 
В них только создатель сетевого адреса способен отправить валидный пакет данных от своего имени, и только адресат будет способен его расшифровать.

### Распределенная система доменных имен

Для удобства в интернете используется обращение по доменному имени, компьютер пользователя должен сначала обратившись к DNS серверу получить соответствующий ip адрес . 
Распределённая база данных DNS поддерживается с помощью иерархии DNS-серверов, взаимодействующих по определённому протоколу. 
DNS запросы почти никогда не шифруются, что позволяет прослушивать и подменять ответы. 
Чаще всего блокировки в интернете работают именно по DNS. 
Зарегистрировать домен можно у одного из регистраторов, аккредитованных ICANN. Регистратор проверяет свободен ли домен и создает запись в WHOIS с информацией о владельце домена. Домен также можно зарегистрировать через реселлеров регистратора.

Решения всего 2:
* Использовать не запоминающиеся домены образованные непосредственно от адресов, как это сделано в [Meshname](https://habr.com/ru/post/550688/)
* Использовать блокчейн для DNS записей, к примеру [ALFIS](https://habr.com/ru/post/597207/)

### Распределенная маршрутизация

На данный момент инфраструктура предоставляющая доступ в интернет строится по централизованному принципу. 
Если упрощать: 
Есть магистральные провайдеры, обменивающиеся трафиком, они предоставляют доступ местным провайдерам и платформам. 
Местные провайдеры предоставляют доступ отдельным пользователям и иногда содержат у себя сервера платформ для быстрого доступа к часто используемому контенту. 
Сообщение одного пользователя в современном интернете через цепочки роутеров доходит до серверов платформы, а затем обратно по похожему пути, даже если пользователи находятся в соседних домах. 

Такая топология требует широких каналов связи и высокопроизводительных маршрутизаторов, способных обеспечить большое количество соединений и малые задержки. 
В качестве линий связи чаще всего применяется оптоволоконные кабели, которые требуют дорогостоящего оборудования для монтажа. 
Не редки случаи отключения связи в [городах](https://ria.ru/20120920/499696450.html) и даже [небольших странах](https://dailytechinfo.org/news/2284-gruzinskaya-zhenshhina-ostavila-armeniyu-bez-interneta.html) из-за [повреждения](https://www.e1.ru/text/spring/2012/05/16/52587341/) ВОЛС. 
В сравнении с медными кабелями, для соединения которых достаточно 5 минут и примитивных инструментов, соединение оптического кабеля требует специального сварочного аппарата и не меньше часа времени. 
Наличие точек концентрации трафика делает сеть уязвимой к отказу оборудования, частично эту проблему решают дублированием. 
Кроме того, в централизованной сети проще осуществлять перехват трафика. 

Широкополосный интернет появился в странах СНГ не сразу с повсеместным распространением ЭВМ. 
[В этот период граждане начали сами строить локальные сети на свитчах.](https://www.youtube.com/watch?v=MYtIQQ7eQH0&t=1260s) 
Особенностью их была древовидная топология, и, как следствие, низкая надежность, выход из строя одного из свитчей делил сеть минимум на 2 сегмента. 
Строить сеть разветвленной свитчи не позволяли, древовидная топология предполагала централизацию. 
Отдельные пользователи стали подключать спутниковый интернет и перепродавать его с прибылью, так появились первые интернет провайдеры. 

Благодаря невероятному прогрессу в области вычислительной техники, человечество подобралось к созданию принципиально неотключаемого средства мгновенной и дешевой связи - распределенной компьютерной сети (mash сети). 
Mash сеть предполагает маршрутизацию и передачу данных силами большого количества маломощных устройств. 
Маршрут может меняться - проходить через разные узлы, _что значительно усложняет перехват подмену и блокирование передачи_.

Первые прототипы таких сетей уже существуют. guifi.net (основана на протоколе B.A.T.M.A.N) обеспечивает связью жителей Каталонии. 
Овладение такой технологией в достаточных масштабах позволит организовать трудно отслеживаемую почти бесплатную связь, в том числе и мобильную, избавится от рекламы, корпоративной слежки и осуществлять действительно независимую политику. 

[Бизнес тоже испытывает mesh сети, и находит их достаточно производительными](https://www.youtube.com/watch?v=Wux0nZ6ewHI&ab_channel=EvilWirelessMan).

Для участия в распределенной сети в качестве маршрутизатора необходимо устройство, способное одновременно поддерживать соединение минимум с 3-мя другими подобными устройствами, желательно по проводу. 
Для обеспечения массовости участников, сеть должна строится с применением как можно более дешевых и распространенных технологий:  WIFI и 100Base-TX (100Мбт по витой паре). 
Для чего подойдет большая большая часть домашних роутеров, которые сейчас есть у каждого. 
Вовлечение клиентских устройств в маршрутизацию тоже возможно, но не целесообразно по нескольким причинам: 
Смартфоны постоянно перемещаются и имеют ограничения по расходу аккумулятора. 
Стационарные ЭВМ и ноутбуки включены не постоянно. 

Низкая скорость отдельных каналов связи не будет критичной, так как большинство соединений будет между территориально близкими участниками, а также наличию множества альтернативных путей. Кроме того [реклама на сайтах занимает около 50% от общего объема трафика пользователей](https://habr.com/ru/post/299402/) в существующем интернете, в распределенных сервисах рекламы значительно меньше, что освободит дополнительную пропускную способность. 

Роутеры крайне примитивны и могут работать от повербанка до нескольких дней. 
Следовательно, даже отключение света не грозит работе сети в краткосрочном периоде.

### Распределенные платформы

В настоящее время буржуазные соц сети: 
* Продают личные данные пользователей
* Наживаются на рекламе пользователям
* Предоставляют разведданные капиталистическим правительствам
* Путем манипулятивных алгоритмов крадут время пользователей и продвигают буржуазные ценности
* Неугодных банят

Кроме того, соц сети с регистрацией по номеру телефона вынуждают читателей платить за этот телефон. 
При том, что были [случаи угона номера злоумышленниками или гос структурами](https://habr.com/ru/post/667960/).


Не слишком ли большая цена за услуги связи?, когда уже созданы платформы со свободным исходным кодом.

* Соц сети основанные на протоколе ActivityPub
    * Pleroma и mastodon соц сеть со стеной постов, замена twitter
    * pixelfed замена instagram
    * peertube замена youtube
* matrix и XMPP протоколы месенжеров, замена telegram

Вышеперечисленные платформы поддерживают федерализацию - каждый может установить на свой сервер соответствующее ПО и создать таким образом свой инстанс соцсети. 
Правила поведения на каждом сервере устанавливает его администратор: на каких-то инстансах нет никаких правил, на некоторых запрещен NSFW контент и оскорбления, на других такое поведение даже поощряется. 
При этом все инстансы объединены в одну сеть, и контент с каждого из них можно просматривать с любого другого. 
Администратор может блокировать у себя отдельных пользователей или целые инстансы. 
У пользователя всегда есть возможность перейти на другой инстанс, где правила ему по душе, либо основать свой. 

[Fediverse](https://3-info.ru/post/20160) — собирательное название для сети децентрализованных сервисов, связанных воедино протоколом ActivityPub.

Для преодоления информационной товарности необходимо также создавать распределенные сервисы: поиска, перевода, карт и т.д..

### Распределенное хранение данных

Хранение данных в распределенных сетях тоже желательно распределить. 

В связи с чем интерес представляют протоколы распределённых файловых систем freenet и [IPFS](https://habr.com/ru/company/vasexperts/blog/570170/). 
Но, действительно полезны они будут в распределенных системах связи. 
Такие файловые системы хранят данные по принципу torrent, на компьютерах пользователей.
Что позволит снизить общую нагрузку на сеть за счет загрузки с ближайших серверов, в качестве которых могут выступать роутеры с подключенной флешкой.
Роутеры смогут кешировать проходящие через них блоки IPFS, при условии, что передаваться они будут по не зашифрованному соединению. 
Кроме того, неиспользуемая информация будет вытеснятся популярной, так как пользователи не захотят хранить на своих машинах бесполезную информацию.

## Советы по построению подобной сети

Во первых советую регистрироваться на существующих серверах федеративных соц сетей, там уже много интересного контента есть. 

Создавайте публичные пиры и сайты в Yggdrasil. 
Yggdrasil - невероятно удобный инструмент, который позволяет организовывать свой VPN, выводить через него в интернет сайты расположенные на локальной машине, и всё это на примитивном конфигурационном файле. 
Создавая сайты в yggdrasil, вы сможете сохранить их адрес при переносе в локальную сеть, просто скопировав ключи из конфига. 

Вместо того, чтобы просить друзей и знакомых скинуться на ваш VPN или запустить у себя TOR не легче ли, если они живут рядом, протянуть к ним витую пару, а если в соседнем доме подключиться по Wi-Fi. 
Иными словами создать локальную сеть, что кроме того позволит сэкономить на услугах  интернет провайдера, централизованно бороться с рекламой, а может даже построить на районе дешевый безлимитный мобильный интернет для себя и своих друзей. 
Тем более [российские сотовые операторы перестали предоставлять тарифы с безлимитным мобильным интернетом](https://ria.ru/20211130/internet-1761497982.html).

Сейчас у каждого дома есть роутер, стоят они от 200р б/у и почти все позволяют установить свободную прошивку OpenWRT. 
Не все из них способны маршрутизировать трафик B.A.T.M.A.N или yggdrasil, для чего требуется от 64мб оперативной памяти. 
Но, любой роутер со свободной прошивкой легко превратить в простой свитч. 
Отдельные сети на свитчах затем, можно будет объединить через более мощные роутеры с B.A.T.M.A.N. 

B.A.T.M.A.N - протокол канального уровня, и для других участников сеть на B.A.T.M.A.N выглядит, как большой свитч поверх которого сможет работать и yggdrasil. 

Заранее ставьте OpenWRT на роутеры, пока можете. 

Что получаем в такой сети:
1) Высокую скорость благодаря кешированию и отсутствию шифрования.
2) Сложность перехвата трафика, так как большинство соединений будет устанавливаться как раз между соседями (территориально близкими) узлами.         

    Оборудования не напасешься вставать на каждое соединение. 
    Получаем анонимность и приватность без шифрования.
3) Бесплатный, в том числе и мобильный, интернет в районе где есть такая сеть.
4) Никаких подозрений в противозаконной деятельности.

К сожалению, сложно предсказать побочные эффекты от внедрения данных технологий. 
Предположу, что первыми сеть начнут осваивать наркоторговцы, что даст формальный повод властям начать бороться со свободными сетями.
С другой стороны, каждый участник сети сможет блокировать трафик к нежелательному контенту на своем маршрутизаторе. 

[Практические выводы](./Plan.md)